B Binance · The world's largest crypto exchangeBinance Sign up → AD OKX OKX · A leading global crypto exchangeOKX Sign up → AD
📈 Stock analysis tools

🧾 Stock Paper Trading

Buy and sell US stocks and Korean names like Samsung Electronics and SK hynix with virtual KRW and USD. Orders fill only during market hours, with fees and taxes applied; your trades and equity curve stay on this device. Prices may be delayed. No real money. Not investment advice.

Loading Prices: Yahoo Finance (via our server, may be delayed) · virtual funds

🧾 Virtual funds · Not real trading · Prices may be delayed · Not investment advice

KRW account equity––
USD account equity––
Combined (in KRW, reference)––
Today's P&L––
Streak––
–
Loading…

Shortcuts: B buy · S sell · / search · Enter place · Esc close

💱 Currency exchange (simulation)

Converts at the latest USD/KRW rate (KRW=X) with no spread or fee — a simulation; real exchanges cost more. Amounts moved by exchange are not counted as profit or loss.

Performance (your own records, per currency)

The equity curve is sampled on every fill and exchange, and every 5 minutes while the page is open. Per-account curves subtract amounts moved by exchange, so an exchange does not show as a jump. The combined curve converts to KRW at the rate at each sample (reference only). Win rate and average win / loss count each sell fill by its P&L after fees and tax, never mixing KRW and USD. Max drawdown is the largest fall from a peak on the per-account curve.

⚙️ Fees, tax and data

The default commissions (Korea 0.015%, US 0.1%) are assumptions — rates differ by broker and promotion, so set your own broker's rate. The transaction tax defaults to 0%: in 2025 it was 0.15% on both KOSPI and KOSDAQ (KOSPI: 0% tax + 0.15% rural special tax), in 2023 it was 0.20%, and the government announced a plan to return to 0.20% in 2026. Check this year's rate in your broker's notice and enter it. US regulatory fees such as the SEC fee, exchange spreads, dividends and capital gains tax are not modelled.

All records are stored only in this browser (localStorage, key xc:stock_paper:v1) and never sent to a server. Use export / import to move them to another device.

Reset accounts

Clears holdings, orders, history and the equity curve, and starts over with the virtual balances you choose. Fee and tax settings and your streak are kept. Export first if you may want them back.

KRW account

USD account

Paper trading with virtual funds. Not real trading and not investment advice. Results are computed only from your own records stored on this device. Prices come from Yahoo Finance via our server and may be delayed 15–20 minutes or more depending on the exchange, or interrupted. Charts: TradingView Lightweight Charts™

What this tool does

Practise trading with virtual money: 10 million won and 10,000 dollars. The KRW account trades Korean stocks such as Samsung Electronics and SK hynix; the USD account trades US stocks and ETFs such as Apple and NVIDIA, and you can move money between them at the live USD/KRW rate in a simulated exchange. It has market and limit orders, fills only during market hours, commissions and the Korean sell-side transaction tax, average cost and unrealized P&L, per-currency equity curves and stats, and average-cost lines, order lines and fill markers on the chart. Everything stays on this device. No real money moves, and it is not investment advice.

How it is calculated

Prices come from Yahoo Finance via our server, from a cache shared by all visitors (5-minute bars for the day, cached about a minute on the server). Every 15 seconds the page checks only the stocks you hold, have orders on, or are viewing, and fetches the ones that are due one at a time, 0.4 s apart — about every minute while a market is open, every 5 minutes while it is closed, and not at all while the tab is hidden. The USD/KRW rate (KRW=X) is fetched every 5 minutes. Depending on the exchange, prices are 15–20 minutes late or more (Korean stocks about 20 minutes), regular session only. A price is 'fillable now' when the market is open (the server's market-hours flag), it is not a cached fallback, and its quote time is within 45 minutes. Placing an order first re-fetches the quote and plans with that. Commission = trade value × rate (KRW rounded down to the won, USD to the nearest cent); Korean sell tax = trade value × tax rate (rounded down to the won). Average cost = buy value excluding fees ÷ shares; unrealized P&L = value − cost − buy fees; realized P&L = proceeds after fees and tax − cost and buy fees of the shares sold. Combined = KRW equity + USD equity × rate (reference). Records are saved as JSON in localStorage under xc:stock_paper:v1.

Simulation rules in detail

Accounts and what can be traded

The KRW account (default 10 million won) trades Korean stocks and ETFs priced in won (.KS KOSPI, .KQ KOSDAQ); the USD account (default $10,000) trades US stocks and ETFs priced in dollars. Indices, currencies, commodities and other currencies cannot be traded. Quantities are whole shares of 1 or more, with no short selling, margin or credit — only the cash and shares you have. Korean limit prices are whole won, US limit prices go to the cent. Up to 50 open orders.

Market orders: now during the session, queued outside it

Placing an order re-fetches the stock's quote. If the market is open, the value is not a cached fallback and the quote time is within 45 minutes, the whole order fills at that price (about 20 minutes delayed for Korea). Otherwise it is queued, and fills at the first quote after the open whose time is later than the order. A queued buy holds last price × 1.3 × shares plus commission and returns the rest when filled; if even the opening price is unaffordable it is cancelled. A queued sell sets the shares aside from your holdings.

Limit orders: the whole order at the limit when a polled price reaches it

A buy limit fills when a polled price is at or below the limit, a sell limit when it is at or above, always in full at the limit price. Only fresh quotes taken while the market is open and after the order time count. If the limit is already better than the last price when placed (buy limit ≥ last, sell limit ≤ last), it fills at once at the last price. A buy order holds shares × limit + commission. There is no order book, partial fill, slippage or price-limit check, and orders stay until cancelled.

Costs and P&L

Commission = trade value × rate, rounded down to the won for KRW and to the nearest cent for USD. Only Korean sells pay tax = trade value × tax rate (rounded down to the won). Average cost is the weighted average buy price excluding fees; unrealized P&L = value − cost − buy fees; realized P&L = trade value − commission − tax − cost and buy fees of the shares sold. Win rate, average win / loss and payoff in the stats table count each sell fill's realized P&L, separately for KRW and USD.

Exchange, combined view and today's P&L

Exchanges use the latest USD/KRW (KRW=X) value with no spread, rounding down to the won or the cent. The amount exchanged is also moved in each account's base (start ± exchanges) and today's starting value, so it is never counted as profit or loss. Combined = KRW equity + USD equity × current rate, compared with the starting balances valued at the rate when you started. Today's P&L compares with the last record before midnight on this device (or with when you first opened the page today).

Things to know

Frequently asked questions

Does real money move?

No. It is practice with virtual funds and is not connected to any broker. Results come only from your own records on this device, and nothing here tells you what to buy or sell.

Why doesn't a market order fill when the market is closed?

Like a real market, fills happen only in the regular session. A market order placed outside hours is queued and fills in full at the first quote after the open whose time is later than the order. Pre-market and after-hours trading are not modelled.

How do limit orders fill?

When a price polled every few minutes is at or below a buy limit (at or above a sell limit), the whole order fills at the limit price. If the limit is already better than the last price when you place it, it fills right away at the last price. There is no order book, queue position, partial fill or slippage, and a price that touches the limit briefly between polls is missed. Orders stay until you cancel them.

How were the fees and tax chosen?

The default commissions (Korea 0.015%, US 0.1%) are assumptions you can change in Settings. The Korean sell tax defaults to 0%, with buttons for the 2025 rate (0.15%) and the 2023 rate (0.20%); the government announced a plan to return to 0.20% in 2026, so check this year's rate with your broker. US regulatory fees such as the SEC fee, exchange spreads, dividends and capital gains tax are not modelled.

What rate is used for currency exchange?

The latest USD/KRW (KRW=X) value from Yahoo Finance, with no spread. The rate and its time are shown; results are rounded down to the won or the cent. Amounts moved by exchange are excluded from each account's P&L and return.

Where are my records stored?

Only in this browser's localStorage (key xc:stock_paper:v1); nothing is sent to a server. To move or back up, use Export JSON in Settings and load the file with Import JSON.

Paper trading with virtual funds. Not real trading and not investment advice. Prices come from Yahoo Finance via our server and may be delayed or interrupted.

📚 Worth reading
🧪Getting the Most from Stock Paper Trading: Matching Market Hours, Delayed Quotes, Fees and Transaction Tax to Reality→ ⚖️Where a 'fair value' number comes from→ 🏛️The kinds of tax attached to shares→ 🎢The biases that keep distorting judgement→
← All stock tools